#include <bits/stdc++.h>

using namespace std;

typedef long long ll;
typedef double db;

#define in read()
#define pii pair<int,int>
#define fi first
#define se second
#define FILE(x) freopen(x".in","r",stdin);\
	freopen(x".out","w",stdout);
#define pb push_back

int read(){
	int x = 0,sgn = 1;char ch = getchar();
	for(;!isdigit(ch);ch = getchar()) if(ch == '-') sgn = -1;
	for(;isdigit(ch);ch = getchar()) x = (x<<1)+(x<<3)+(ch^48);
	return x*sgn;
}

const int N = 110;
const int M = 10000;

namespace dp{db f[2][M+10][N][3];}
namespace DP{__float128 f[2][M+10][N][3];}

int n,m,k;

template <typename T>
void write(T x){
	int t = x; printf("%d.",t);
	x -= t; T cur = 0.5;
	for(int i = 1;i <= k;i++){
		x = x * 10; t = x; if(i == k) t = x + cur; printf("%d",t); t = x; x -= t;
	}return;
}

template <typename T>
void solve(T f[][M+10][N][3]){
	f[0][5000][0][0] = 1; int o = 0;
	for(int i = 1;i <= n;i++,o ^= 1){
		memset(f[o^1],0,sizeof(f[o^1]));
		for(int j = 0;j <= M;j++)
			for(int k = 0;k < i;k++){
				for(int p = 0;p <= 2;p++)
					if(f[o][j][k][p] > 0){
						if(j >= 2 * i) f[o^1][j - 2 * i][k+1][p] += f[o][j][k][p] * (k - p + 1) / i;
						if(k) f[o^1][j][k][p] += f[o][j][k][p] * (2 * k - p) / i;
						if(j + 2 * i <= M && k >= 2) f[o^1][j+2*i][k-1][p] += f[o][j][k][p] * (k - 1) / i;
						if(p < 2){
							if(j + i <= M && j) f[o^1][j+i][k][p+1] += f[o][j][k][p] * (2 - p) / i;
							if(j >= i) f[o^1][j-i][k+1][p+1] += f[o][j][k][p] * (2 - p) / i;
						}
					}
			}
	}
	T ans = 0;
	for(int i = m + 5000;i <= M;i++) ans = ans + f[o][i][1][2];
	write(ans);
}

int main (){
#ifndef ONLINE_JUDGE
	freopen("1.in","r",stdin);
#endif
	n = in,m = in,k = in;
	if(k <= 8) solve(dp::f);
	else solve(DP::f);
	return 0;
}

